
package lexico;

import exceptions.LexerException;
import java.util.ArrayList;

/**
 *
 * @author 
 */
public class ErrorTable extends ArrayList<LexerException>{

    // Talvez fosse herança? Talvez nem necessite desta classe?
//	private ArrayList<LexerException> lexerException = new ArrayList<LexerException>();


	public void pushBackLexerException(LexerException le){
//		lexerException.add(le);
		add(le);
	}

	/**
	 * Talvez a responsabilidade de tratamento dos tokens seja dentro da classe
	 * e não fora. Algo como o currentToken e getNextToken. Porém este efeito
	 * pode ser conseguido facilmente pela iteração da Estrutura de dados fora
	 * daqui.
	 * @return
	 */
	public ArrayList<LexerException> getExceptions(){
//		return lexerException;
		return this;
	}

	/**
	 * Imprime a lista de tokens
	 */
	public void printErrors(){
		System.out.println("Erros: ");

		for (LexerException le:this) {
			System.out.print("| " + le.getTipoDeErro() + " ");
			System.out.print("| \"" + le.getLexema() + "\" ");
			System.out.print("| " + le.getLinha() + " ");
			System.out.println("| " + le.getPosicao() + " |");
		}
	}

}
